# demo01_re.py
# 导入正则表达式模块
import re
# 1.尝试从字符串的开头匹配，匹配不到返回None
# re.match(正则字符串, 目标字符串)
# <re.Match object; span=(0, 3), match='123'>
# r1 = re.match('\d{3}', '1234abcd888')
# print(r1.group()) # 获取匹配的字符串

# 2.匹配整个字符串第一个出现
# re.search(正则字符串, 目标字符串)
# <re.Match object; span=(5, 8), match='456'>
# r2 = re.search('\d{3}', '12abc456def78')
# print(r2.group())

# 3.匹配整个字符串，返回列表
# re.findall(正则字符串, 目标字符串)
# ['123', '456', '789']
# r3 = re.findall('\d{3}', '123abc456def789')
# print(r3)

# 4.匹配整个字符串，返回可迭代对象，每个元素是一个匹配对象
# re.finditer(正则字符串, 目标字符串)
# <callable_iterator object at 0x7fa4bfa90700>
# r4 = re.finditer('\d{3}', '123abc456def789')
# print(r4)
# for item in r4:
#     print(item, item.group())

# 5.按照正则表达式对字符串进行切割
# words = 'How  are you?I am   fine!And you'
# # 得到每个单词，按照空格、?、!
# # re.split(正则字符串, 目标字符串)
# r5 = re.split('\s+|\?|!', words)
# print(r5)

# 6.字符串查找并替换
# comment = 'WoCao，居然还有这种事情发生，我草 xxxxxxx  卧槽 xxxx'
# print(comment)
# 替换敏感词  忽略大小写
# re.sub(正则字符串, 替换字符串, 目标字符串, flags=re.IGNORECASE)
# r6 = re.sub('wocao|我草|卧槽', '**', comment, flags=re.IGNORECASE)
# print(r6)


# 提前将正则字符串编译为正则对象
re_obj = re.compile('\d{3}')
# 使用这个对象进行匹配
r1 = re_obj.search('123abc456def789')
print(r1)
r2 = re_obj.match('123abc456def789')
print(r2)
r3 = re_obj.findall('123abc456def789')
print(r3)



